package com.foreknow.oop11;

import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ReadWrite {
  /**
   * 向文件中写数据
   */
  public void write(List<Student> list){
    try {
      //创建输出流，向Student.txt文件中写数据
      FileWriter fw = new FileWriter("/Users/imac/Desktop/lib/Student.txt");
      BufferedWriter bw = new BufferedWriter(fw);

      //需要对list进行遍历，每遍历一次就获取到一个对象
      Iterator<Student> iterator = list.iterator();
      while (iterator.hasNext()){
        //从集合中获取Student对象(数据的格式： sid sname age phone)
        Student stu = iterator.next();
        String str = stu.getSid()+" "+stu.getName()+" "+stu.getAge()+" "+stu.getPhone();
        //向文件中写数据
        bw.write(str);
        //换行
        bw.newLine();
      }
      //关闭资源

      bw.close();
      fw.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  /**
   * 从文件中读取数据
   */
  public List<Student> readFile() {
    List<Student> list = new ArrayList<>();
    //定义输入流
    try {
      FileReader fr = new FileReader("/Users/imac/Desktop/lib/Student.txt");
      BufferedReader br = new BufferedReader(fr);

      //读取文件中的一行
      String temp; //100  jazz 30  12121212121----String
      while ((temp = br.readLine())!=null){
        //拆分字符串，怎么拆分呢？
        String[] str = temp.split(" ");
        //将数组中的每个字符串保存到Student对象中
        Student s = new Student();
        s.setSid(str[0]);
        s.setName(str[1]);
        //要将String转换为int类型  int	parseInt(String s)
        s.setAge(Integer.parseInt(str[2]));
        s.setPhone(str[3]);

        //将对象保存到list集合中
        list.add(s);
      }
    //关闭资源
      br.close();
      fr.close();
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
    return list;
  }
}
